}
}
-static gboolean
-gtk_focus_widget_event (GtkWidget *widget,
- GdkEvent *event)
+static void
+motion_cb (GtkEventControllerMotion *controller,
+ gdouble x,
+ gdouble y,
+ GtkWidget *widget)
{
GtkFocusWidget *self = GTK_FOCUS_WIDGET (widget);
- double x, y;
-
- if (gdk_event_get_event_type (event) == GDK_MOTION_NOTIFY)
- {
- gdk_event_get_coords ((GdkEvent *)event, &x, &y);
- self->mouse_x = x;
- self->mouse_y = y;
+ self->mouse_x = x;
+ self->mouse_y = y;
- gtk_widget_queue_draw (widget);
- }
-
- return GDK_EVENT_PROPAGATE;
+ gtk_widget_queue_draw (widget);
}
static void
static void
gtk_focus_widget_init (GtkFocusWidget *self)
{
+ GtkEventController *controller;
+
gtk_widget_set_has_surface (GTK_WIDGET (self), FALSE);
self->child1 = gtk_button_new_with_label ("1");
self->mouse_x = G_MININT;
self->mouse_y = G_MININT;
+
+ controller = gtk_event_controller_motion_new ();
+ g_signal_connect (controller, "motion",
+ G_CALLBACK (motion_cb), self);
+ gtk_widget_add_controller (GTK_WIDGET (self), controller);
}
static void
widget_class->snapshot = gtk_focus_widget_snapshot;
widget_class->measure = gtk_focus_widget_measure;
widget_class->size_allocate = gtk_focus_widget_size_allocate;
- widget_class->event = gtk_focus_widget_event;
gtk_widget_class_set_css_name (widget_class, "focuswidget");
}